package com.hsgene.consumables.service;

import com.hsgene.common.util.result.ApiResult;
import com.hsgene.common.util.support.LimitHelper;
import com.hsgene.consumables.condition.ApplyCondition;
import com.hsgene.consumables.domain.ConsumablesApplyAudit;
import com.hsgene.consumables.domain.ConsumablesSendSignInfo;
import com.hsgene.consumables.dto.*;
import com.hsgene.logistics.domain.LogisticsInfo;

import java.util.Date;
import java.util.List;

public interface ConsumablesApplyService {
    /**
     * 申请耗材
     *
     * @param applyInfos 耗材信息
     * @return
     */
    String addConsumablesApplyInfo(ConsumablesApplyInfoDto applyInfos);

    /**
     * 更新耗材申请单状态
     *
     * @param shipInfo 发放信息
     * @return
     */
    boolean updateConsumablesApplyInfo(ConsumablesApplyShipInfo shipInfo);

    /**
     * 寄送信息
     *
     * @param expressInfoDto 寄送信息
     * @return
     */
    boolean sendConsumablesApply(ConsumablesExpressInfoDto expressInfoDto);

    /**
     * 申请信息详情
     *
     * @param applyNo 申请编号
     * @return
     */
    Object getConsumablesApplyDetailsInfo(String applyNo);

    /**
     * 签收
     *
     * @param applyNo 单号
     * @param date    时间
     * @return
     */
    boolean receiptConsumablesInfo(String applyNo, Date date);

    /**
     * 查询耗材物流信息
     *
     * @param applyNo 申请编号
     * @return
     */
    ApiResult<List<LogisticsInfo>> queryExpressInfo(String applyNo);

    /**
     * 获取查询列表
     *
     * @param condition 条件
     * @return
     */
    List<ConsumablesListInfoDto> queryConsumblesList(ConsumablesQueryCondition condition);

    /**
     * 耗材审核列表
     * @param applyCondition 查询条件
     * @return
     */
    ApiResult queryApplys(ApplyCondition applyCondition);

    /**
     * 耗材审核寄送弹窗展示信息获取
     * @param id
     * @return
     */
    ApiResult applyBaseInfo(String id);

    /**
     * 耗材寄送信息录入
     * @param consumablesSendSignInfoDto
     * @return
     */
    ApiResult applySendSign(ConsumablesSendSignInfo consumablesSendSignInfoDto);

    /**
     * 耗材申请详情
     * @param id
     * @return
     */
    ApiResult queryApplyDetail(String id);

    /**
     * 耗材申请详情明细列表
     * @param id 耗材申请id
     * @param limitHelper 分页条件
     * @return
     */
    ApiResult queryApplyDetailPage(String id, LimitHelper limitHelper);

    /**
     * 审核申请
     * @param consumablesApplyAudit
     * @return
     */
    ApiResult auditStatus(ConsumablesApplyAudit consumablesApplyAudit);

    /**
     * 根据地服ID和关键字搜索已有耗材列表
     * @param groundServantId 地服id
     * @param keyWords 关键字
     * @return
     */
    ApiResult groundServantGoods(String groundServantId,String keyWords);

    /**
     * 花生仁耗材申领列表
     * @param limitHelper 分页条件
     * @param listType 前端分类（申领状态）
     * @param orderBy 排序条件
     * @return
     */
    ApiResult peanutApplys(LimitHelper limitHelper, Integer listType, Integer orderBy);

    /**
     * 花生仁耗材申领详情
     * @param id 申领id
     * @return
     */
    ApiResult peanutApplyDetail(String id);

    /**
     * 花生仁耗材申领签收
     * @param id 耗材申领id
     * @return
     */
    ApiResult peanutSignIn(String id);

    /**
     * 花生仁取消耗材申领
     * @param id
     * @return
     */
    ApiResult peanutDelete(String id);
}
